/*
 * Copyright 2010-2024 JetBrains s.r.o. and Kotlin Programming Language contributors.
 * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
 */

package org.jetbrains.kotlin.jvm.abi;

import com.intellij.testFramework.TestDataPath;
import org.jetbrains.kotlin.test.JUnit3RunnerWithInners;
import org.jetbrains.kotlin.test.KotlinTestUtils;
import org.jetbrains.kotlin.test.util.KtTestUtil;
import org.jetbrains.kotlin.test.TargetBackend;
import org.jetbrains.kotlin.test.TestMetadata;
import org.junit.runner.RunWith;

import java.io.File;
import java.util.regex.Pattern;

/** This class is generated by {@link org.jetbrains.kotlin.jvm.abi.TestGeneratorKt}. DO NOT MODIFY MANUALLY */
@SuppressWarnings("all")
@TestMetadata("plugins/jvm-abi-gen/testData/compile")
@TestDataPath("$PROJECT_ROOT")
@RunWith(JUnit3RunnerWithInners.class)
public class CompileAgainstJvmAbiTestGenerated extends AbstractCompileAgainstJvmAbiTest {
  private void runTest(String testDataFilePath) {
    KotlinTestUtils.runTest(this::doTest, TargetBackend.JVM_IR, testDataFilePath);
  }

  public void testAllFilesPresentInCompile() {
    KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("plugins/jvm-abi-gen/testData/compile"), Pattern.compile("^([^.]+)$"), null, false);
  }

  @TestMetadata("anonymousObject")
  public void testAnonymousObject() {
    runTest("plugins/jvm-abi-gen/testData/compile/anonymousObject/");
  }

  @TestMetadata("classes")
  public void testClasses() {
    runTest("plugins/jvm-abi-gen/testData/compile/classes/");
  }

  @TestMetadata("clinit")
  public void testClinit() {
    runTest("plugins/jvm-abi-gen/testData/compile/clinit/");
  }

  @TestMetadata("conflictingClasses")
  public void testConflictingClasses() {
    runTest("plugins/jvm-abi-gen/testData/compile/conflictingClasses/");
  }

  @TestMetadata("inlineAnnotationInstantiation")
  public void testInlineAnnotationInstantiation() {
    runTest("plugins/jvm-abi-gen/testData/compile/inlineAnnotationInstantiation/");
  }

  @TestMetadata("inlineAnonymousObject")
  public void testInlineAnonymousObject() {
    runTest("plugins/jvm-abi-gen/testData/compile/inlineAnonymousObject/");
  }

  @TestMetadata("inlineCapture")
  public void testInlineCapture() {
    runTest("plugins/jvm-abi-gen/testData/compile/inlineCapture/");
  }

  @TestMetadata("inlineClassWithPrivateConstructor")
  public void testInlineClassWithPrivateConstructor() {
    runTest("plugins/jvm-abi-gen/testData/compile/inlineClassWithPrivateConstructor/");
  }

  @TestMetadata("inlineNoRegeneration")
  public void testInlineNoRegeneration() {
    runTest("plugins/jvm-abi-gen/testData/compile/inlineNoRegeneration/");
  }

  @TestMetadata("inlineReifiedFunction")
  public void testInlineReifiedFunction() {
    runTest("plugins/jvm-abi-gen/testData/compile/inlineReifiedFunction/");
  }

  @TestMetadata("inlineWhenMappings")
  public void testInlineWhenMappings() {
    runTest("plugins/jvm-abi-gen/testData/compile/inlineWhenMappings/");
  }

  @TestMetadata("innerObjectRegeneration")
  public void testInnerObjectRegeneration() {
    runTest("plugins/jvm-abi-gen/testData/compile/innerObjectRegeneration/");
  }

  @TestMetadata("kt-40133")
  public void testKt_40133() {
    runTest("plugins/jvm-abi-gen/testData/compile/kt-40133/");
  }

  @TestMetadata("kt-40340")
  public void testKt_40340() {
    runTest("plugins/jvm-abi-gen/testData/compile/kt-40340/");
  }

  @TestMetadata("multifileClass")
  public void testMultifileClass() {
    runTest("plugins/jvm-abi-gen/testData/compile/multifileClass/");
  }

  @TestMetadata("multifileClassOptimized")
  public void testMultifileClassOptimized() {
    runTest("plugins/jvm-abi-gen/testData/compile/multifileClassOptimized/");
  }

  @TestMetadata("multifileClassOptimizedWithRemovePrivateOption")
  public void testMultifileClassOptimizedWithRemovePrivateOption() {
    runTest("plugins/jvm-abi-gen/testData/compile/multifileClassOptimizedWithRemovePrivateOption/");
  }

  @TestMetadata("multifileClassWithRemovePrivateOption")
  public void testMultifileClassWithRemovePrivateOption() {
    runTest("plugins/jvm-abi-gen/testData/compile/multifileClassWithRemovePrivateOption/");
  }

  @TestMetadata("nestedClassWithDollar")
  public void testNestedClassWithDollar() {
    runTest("plugins/jvm-abi-gen/testData/compile/nestedClassWithDollar/");
  }

  @TestMetadata("privateAnnotationsFromJavaApp")
  public void testPrivateAnnotationsFromJavaApp() {
    runTest("plugins/jvm-abi-gen/testData/compile/privateAnnotationsFromJavaApp/");
  }

  @TestMetadata("privateAnnotationsFromJavaLib")
  public void testPrivateAnnotationsFromJavaLib() {
    runTest("plugins/jvm-abi-gen/testData/compile/privateAnnotationsFromJavaLib/");
  }

  @TestMetadata("privateClassesFromJavaApp")
  public void testPrivateClassesFromJavaApp() {
    runTest("plugins/jvm-abi-gen/testData/compile/privateClassesFromJavaApp/");
  }

  @TestMetadata("privateClassesFromJavaLib")
  public void testPrivateClassesFromJavaLib() {
    runTest("plugins/jvm-abi-gen/testData/compile/privateClassesFromJavaLib/");
  }

  @TestMetadata("privateInterfaceImplementedByPublicClass")
  public void testPrivateInterfaceImplementedByPublicClass() {
    runTest("plugins/jvm-abi-gen/testData/compile/privateInterfaceImplementedByPublicClass/");
  }

  @TestMetadata("privateOnlyConstructors")
  public void testPrivateOnlyConstructors() {
    runTest("plugins/jvm-abi-gen/testData/compile/privateOnlyConstructors/");
  }

  @TestMetadata("privateValueClassConstructor")
  public void testPrivateValueClassConstructor() {
    runTest("plugins/jvm-abi-gen/testData/compile/privateValueClassConstructor/");
  }

  @TestMetadata("topLevel")
  public void testTopLevel() {
    runTest("plugins/jvm-abi-gen/testData/compile/topLevel/");
  }
}
